
import java.util.*;

//下一个更大元素 I
class Solution1 {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        int[] res=new int[nums1.length];
        ArrayList<Integer> arr=new ArrayList<>();
        for(int i=0;i<nums2.length;i++){
            arr.add(nums2[i]);
        }
        for(int i=0;i<nums1.length;i++){
            int index=arr.indexOf(nums1[i]);
            res[i]=func(nums2,index,nums1[i]);
        }
        return res;

    }
    public int func(int[] nums2,int index,int val){
        if(index>=nums2.length-1){
            return -1;
        }
        for(int i=index+1;i<nums2.length;i++){
            if(nums2[i]>val){
                return nums2[i];
            }
        }
        return -1;
    }
}


//下一个更大元素 II
class Solution {
    public int[] nextGreaterElements(int[] nums) {
        int n = nums.length;
        int[] ret = new int[n];
        Arrays.fill(ret, -1);
        Deque<Integer> stack = new LinkedList<Integer>();
        for (int i = 0; i < n * 2 - 1; i++) {
            while (!stack.isEmpty() && nums[stack.peek()] < nums[i % n]) {
                ret[stack.pop()] = nums[i % n];
            }
            stack.push(i % n);
        }
        return ret;
    }
}

